/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pio.action.administrador.coordinadores;

import DBMS.DataBaseManager;
import clases.Coordinador;
import clases.Institucion;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

/**
 *
 * @author tamerdark
 */
public class Instituciones extends DispatchAction {

    public ActionForward add(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        request.setAttribute("instituciones", Institucion.getAll());
        Coordinador c = (Coordinador) form;
        System.out.println("El tamano de las instituciones es: " + c.getInstituciones().size());
        Institucion i = new Institucion();
        i.setId(c.getId());
        c.agregarInstitucion(i);
        DataBaseManager dbms = DataBaseManager.getInstance();
        if (dbms.agregarCoordinador(c)) {            
            repopulate(form);
            c.setMensaje("Coordinador agregado a la institución.");
            return mapping.findForward("success");
        } else {
            repopulate(form);
            c.setMensaje("No se pudo agregar el coordinador a la institución.");
            return mapping.findForward("failure");
        }
    }

    public ActionForward delete(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        request.setAttribute("instituciones", Institucion.getAll());
        Coordinador c = (Coordinador) form;
        Institucion i = new Institucion();
        i.setId(c.getId());
        c.agregarInstitucion(i);
        DataBaseManager dbms = DataBaseManager.getInstance();
        if (dbms.eliminarCoordinador(c)) {
            repopulate(form);
            c.setInstituciones(new ArrayList());
            c.setMensaje("Coordinador eliminado de la institución.");
            return mapping.findForward("success");
        } else {
            repopulate(form);
            c.setMensaje("No se pudo eliminar el coordinador de la institución.");
            return mapping.findForward("failure");
        }
    }

    public ActionForward populate(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        System.out.println("Entrando a populate");
        Coordinador c = (Coordinador)form;
        c.setCedula(String.valueOf(request.getSession().getAttribute("cedula")));
        repopulate(c);
        request.setAttribute("instituciones", Institucion.getAll());
        return mapping.findForward("populate");
    }
    
    private void repopulate(ActionForm form){
        DataBaseManager dbms = DataBaseManager.getInstance();
        Coordinador c = (Coordinador) form;
        List<Coordinador> l = dbms.consultarCoordinador(c);
        if(l.isEmpty()){
            c.setMensaje("Hubo un error consultando las instituciones asociadas al coordinador.");
        }else{
            c.cloneWith(l.get(0));
        }
    }
}
